スイッチロール用の IAM ロールを簡単に作りたい!!
マネジメントコンソールを手動で操作し、スイッチロール用の IAM ロールを作成する手順はこちらに紹介されています。
これを、 CloudFormation を用いて半自動化するのがこの記事の目的です。とはいえ、用意したテンプレートを使っていただくだけなので CloudFormation について学習する必要はありません。この記事のみでいくらかの効率化が可能です。
下準備
次のものを準備してください。
- 作成する IAM ロールを使用される方の情報
- 名字
- お名前
- 所属組織名
- スイッチロール元の IAM ユーザーがある AWS アカウントの ID
- IAM ロールを作成したい AWS アカウント上での IAM ロール作成権限
CloudFormation を呼び出すための URL を作る
CloudFormation テンプレート
CloudFormation ではテンプレートを用いて定形作業を効率化できます。
今回使用するテンプレートはこちらです。
https://utility-for-aws-operation.s3-ap-northeast-1.amazonaws.com/create-iam-role.json
{ "AWSTemplateFormatVersion" : "2010-09-09", "Description" : "Template for Creating IAM Role to Switch", "Parameters" : { "TrustedAWSAccountId" : { "AllowedPattern" : "^[0-9]*$", "Type" : "String", "Default" : "", "Description" : "Trusted AWS Account ID" }, "IAMUserName": { "AllowedPattern" : "^[a-z._-]*$", "Type": "String", "Default": "xxx.xxx", "Description": "IAM Role Name" } }, "Resources" : { "IAMRole": { "Type": "AWS::IAM::Role", "Properties": { "AssumeRolePolicyDocument": { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Principal": { "AWS": { "Fn::Join" : [ "", [ "arn:aws:iam::", { "Ref" : "TrustedAWSAccountId" }, ":user/", { "Ref" : "IAMUserName" } ] ] } }, "Action": [ "sts:AssumeRole" ], "Condition": { "Bool": { "aws:MultiFactorAuthPresent": "true" } } } ] }, "ManagedPolicyArns": [ "arn:aws:iam::aws:policy/PowerUserAccess" ], "Path": "/", "RoleName": { "Ref" : "IAMUserName" } } } }, "Outputs" : { "IAMRoleArn": { "Value": { "Fn::GetAtt" : [ "IAMRole", "Arn" ] } }, "LinkForSwitchRole": { "Value": { "Fn::Join": [ "", [ "https://signin.aws.amazon.com/switchrole?roleName=", { "Ref" : "IAMUserName" }, "&account=", { "Ref" : "AWS::AccountId" } ] ] } } } }
ご覧の通り、作成される IAM ロールは PowerUserAccess
権限を持ちます。
権限を変更したい場合は上記テンプレートを変更後、ご自身が作成された S3 バケットにアップロードしてお使いください。
これを使用するために、次の URL を用います。
https://ap-northeast-1.console.aws.amazon.com/cloudformation/home?region=ap-northeast-1#/stacks/create/review?templateURL=https://utility-for-aws-operation.s3-ap-northeast-1.amazonaws.com/create-iam-role.json&stackName=<organization name>-<family name>-<given name>-iamRole¶m_IAMUserName=<organization name>-<family name>.<given name>¶m_TrustedAWSAccountId=<aws account id>
URL の書き換え
?の URL は 4 つ、書き換えるところがあります。
プレースホルダー名 | 説明 | 例 |
---|---|---|
<organization name> |
所属組織名 | classmethod |
<family name> |
名字 | takagi |
<given name> |
お名前 | kensuke |
<aws account id> |
スイッチロール元の AWS アカウント ID | 123456789012 |
準備した情報にあわせて書き換えてください。
作成した URL をブラウザーで開く
書き換えた URL をブラウザーで開きましょう。次のような画面が出てきます。
CloudFormation スタックを作成する
入力値に間違いがなければ次の承認にチェックをいれます。
右下のボタンを押してスタックを作成しましょう。
作成された IAM ロールを確認する
次のような表示になったら作成が完了しています。
意図通りの IAM ロールが作成できたかどうか、 AWS IAM の画面で確認してください。
以上で完了です。 多分これが一番楽だと思います。